iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 21
0

GCD (Serial, Concurrent, Main Dispatch Queue)
基本名詞解釋:

Serial vs Concurrent

這兩個名詞有反義的概念,主要是在描述當每項工作(task)被執行時,跟其他工作之間的關係。

Serial(照順序去做排列):serial queues 的意思就是這個佇列裡的工作是按照順序執行的,一次只執行一個,當前一個執行完後,才會執行下一個。serial queues 適合拿來處理一個 APP 專案中需要共享的資源,因為這樣可以確保該存取是有依照順序來的。
Concurrent(同時進行的):concurrent queues 代表這個 queues 裡的 task 會按順序開始執行,但因為是 concurrent ,所以不必等上一個工作執行完才繼續執行下一個,因此每個工作執行結果的時間是無法精準預測的。

Synchronous vs Asynchronous

這兩個名詞有反義的概念,主要是在描述一個 function 回傳 data 的行為。

Synchronous(同步)

一個 synchronous 的 function 只有在完成裡面的工作後,才會回傳值。

Asynchronous(非同步)

Asynchronous function 裡的工作會按照順序執行,但這個 function 不會等其它的動作執行完,它執行完後會馬上回傳值,因此 asynchronous function 不會造成它所在的 Thread 阻塞。

  • 透過 DispatchQueue.main 來取得 Main Thread 的使用權,在 Block 裡面即可寫入我們想要做的事,在實務上通常被用來更新 UI,因 UI 的更新只能在 Main Thread。

上一篇
iOS Unit
下一篇
如何讓 PNG 檔的圖片染色
系列文
iOS 開發:燃燒吧! 從初心者到超級初心者的轉職之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言